package com.hooya.fa.eu.biz.dao.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.hooya.fa.eu.api.bo.stk.SellRecordBO;
import com.hooya.fa.eu.biz.dao.entity.TempXsjlAbnormal;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @Description stockList销售mapper
 * @Author : Zongz
 * @Copyright Copyright (c) 豪雅集团
 * @Create 2024/1/30
 * @Version 1.0.0
 */
@Mapper
public interface StkSellMapper {

    /**
     * 获取whId，用于优化发货sql
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<String> getWhIdByTimeGet(@Param("startDate") String startDate, @Param("endDate") String endDate);

	@DS("europe")
	List<String> getWhIdByTimeGetDaily(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 根据销售时间和发货地获取发货信息
     * 有销售记录的发货数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param whIds     原始仓库id
     * @return list
     */
    List<SellRecordBO> getDeliveryGoodsListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate,
                                                  @Param("whIds") List<String> whIds);
	@DS("europe")
	List<SellRecordBO> getDeliveryGoodsListByDateDaily(@Param("startDate") String startDate, @Param("endDate") String endDate,
												  @Param("whIds") List<String> whIds);

    /**
     * 根据销售时间获取销售信息
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<SellRecordBO> getSellRecordListByDate(@Param("startDate") String startDate, @Param("endDate") String endDate);

	@DS("europe")
	List<SellRecordBO> getSellRecordListByDateDaily(@Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 根据销售时间和sheetNumber获取销售信息(新增方法，不动原流程)
     *
     * @param startDate       开始时间
     * @param endDate         结束时间
     * @param sheetNumberList sheetNumber
     * @return list
     */
    List<SellRecordBO> getSellListByDateAndSheetNumber(@Param("startDate") String startDate,
                                                       @Param("endDate") String endDate,
                                                       @Param("sheetNumberList") List<String> sheetNumberList);

    /**
     * 根据销售时间、发货地和sheetNumber获取发货信息(新增方法，不动原流程)
     *
     * @param startDate       开始时间
     * @param endDate         结束时间
     * @param whIds           原始仓库id
     * @param sheetNumberList sheetNumber
     * @return list
     */
    List<SellRecordBO> getDeliveryGoodsListByDateAndSheetNumber(@Param("startDate") String startDate,
                                                                @Param("endDate") String endDate,
                                                                @Param("whIds") List<String> whIds,
                                                                @Param("sheetNumberList") List<String> sheetNumberList);

    /**
     * 根据时间获取销售补单差异数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<SellRecordBO> getHisSellRecordListByDate(@Param("startDate") String startDate,
                                                  @Param("endDate") String endDate);

	@DS("europe")
	List<SellRecordBO> getHisSellRecordListByDateDaily(@Param("startDate") String startDate,
												  @Param("endDate") String endDate);

    /**
     * 根据时间获取发货补单差异数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param whIds     原始仓库id
     * @return list
     */
    List<SellRecordBO> getHisDeliveryGoodsListByDate(@Param("startDate") String startDate,
                                                     @Param("endDate") String endDate,
                                                     @Param("whIds") List<String> whIds);
	@DS("europe")
	List<SellRecordBO> getHisDeliveryGoodsListByDateDaily(@Param("startDate") String startDate,
													 @Param("endDate") String endDate,
													 @Param("whIds") List<String> whIds);


	List<SellRecordBO> getlywlIsFbaReturnList(@Param("startDate") String startDate, @Param("endDate")String endDate);

	@DS("europe")
	List<SellRecordBO> getlywlIsFbaReturnListDaily(@Param("startDate") String startDate, @Param("endDate")String endDate);



	//查询黄金木需要的临时数据
	List<SellRecordBO> hjm();

	//添加黄金木需要的临时数据
	int insertLywlIsFbaReturn(@Param("sellRecordBOList") List<TempXsjlAbnormal> sellRecordBOList);

	@DS("fa_eu_daily")
	void insertLywlIsFbaReturnDaily(@Param("sellRecordBOList")List<TempXsjlAbnormal> tempXsjlAbnormalLywlIsFDSReturnList);
}
